/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package manejadores;

import entidades.Solicitud;
import interfaz.Entidad;
import interfaz.Manejador;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import persistencia.Conexion;

/**
 *
 * @author Snailin
 */
public class ManejadorDeSolicitud implements Manejador {
       private Conexion conexion=null;
    private static ManejadorDeSolicitud instancia=null;
    private ResultSet rs=null;
    private PreparedStatement stmt=null;
    private ArrayList<Solicitud>solicitudes=null;

    public static ManejadorDeSolicitud getInstancia() {
         if(instancia==null){
              instancia=new ManejadorDeSolicitud();
          }
        return instancia;
    }

    private ManejadorDeSolicitud (){
        conexion=Conexion.getInstancia();
    }

    public ArrayList<Solicitud>getSolicitudes(){
        solicitudes=new ArrayList<Solicitud>();
     
        try {
               String sql="SELECT * FROM solicitud";
              stmt=(PreparedStatement) conexion.hacerEnunciado(sql);

              rs=conexion.hacerConsulta(sql);
            while (rs.next()) {
                Solicitud solicitud=new Solicitud(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getInt(6), rs.getInt(7));
                solicitudes.add(solicitud);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeSolicitud.class.getName()).log(Level.SEVERE, null, ex);
        }


        return solicitudes;
    }

    public int agregar(Entidad solicitud) {
       int fila=0;
        String sql="INSERT INTO solicitud (id_solicitud, via_de_entrada, fecha_recibida, nombre_entrega, nombre_recibe, id_solicitante, id_proyecto)VALUES(0, ?, ?, ?, ?, ?, ?);";
            stmt= (PreparedStatement) conexion.hacerEnunciado(sql);
        try {
        
            stmt.setString(1, ((Solicitud) (solicitud)).getViaEntrada());
            stmt.setString(2, ((Solicitud) (solicitud)).getFechaRecibida());
            stmt.setString(3, ((Solicitud) (solicitud)).getNombreEntrega());
            stmt.setString(4, ((Solicitud) (solicitud)).getNombreRecibe());
            stmt.setInt(5, ((Solicitud) (solicitud)).getIdSolictante());
            stmt.setInt(6, ((Solicitud) (solicitud)).getIdProyecto());
            fila=stmt.executeUpdate();

        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeSolicitud.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }

    public int eliminar(int id) {
       int fila=0;
       String sql="DELETE FROM sistema de gestión de proyectos indotel.solicitud WHERE id_solicitud = ? ";
       stmt=(PreparedStatement) conexion.hacerEnunciado(sql);
        try {
            stmt.setInt(1, id);
            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeSolicitud.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }

    public int modificar(Entidad solicitud, int id) {
          int fila=0;
       String sql="UPDATE sistema de gestión de proyectos indotel.solicitud SET  via_de_entrada = ? , fecha_recibida = ? , nombre_entrega = ? , nombre_recibe = ? , id_solicitante = ?, id_proyecto = ? WHERE id_solicitud = ? ";
       stmt=(PreparedStatement) conexion.hacerEnunciado(sql);
       try {
             stmt.setString(1, ((Solicitud) (solicitud)).getViaEntrada());
            stmt.setString(2,((Solicitud) (solicitud)).getFechaRecibida());
            stmt.setString(3, ((Solicitud) (solicitud)).getNombreEntrega());
            stmt.setString(4, ((Solicitud) (solicitud)).getNombreRecibe());
            stmt.setInt(5, ((Solicitud) (solicitud)).getIdSolictante());
            stmt.setInt(6, ((Solicitud) (solicitud)).getIdProyecto());
            stmt.setInt(7, id);
            fila=stmt.executeUpdate();

        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeSolicitud.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }
}
